package com.sj.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.sj.entity.Article;
import com.sj.entity.Collect;
import com.baomidou.mybatisplus.extension.service.IService;
import com.sj.entity.User;

/**
 * <p>
 * 收藏关注表 服务类
 * </p>
 *
 * @author 孙峻
 * @since 2022-03-09
 */
public interface CollectService extends IService<Collect> {

    /**
     * 判断用户是否收藏或关注
     *
     * @param uid  用户id
     * @param id   文章或者作者id
     * @param type 文章 或者 作者
     * @return
     */
    Boolean checkIsCollect(Integer uid, Integer id, String type);

    /**
     * 获取收藏或关注数量
     *
     * @param id   类型的id
     * @param type 查询的类型 article 文章 author 作者
     * @return
     */
    Long getCollectNum(Integer id, String type);

    /**
     * 获取用户收藏或关注的文章个数
     *
     * @param id   用户id
     * @param type 文章类型 question idea blog 查指定的 文章类型
     * @return
     */
    Long getFixArticleCollectNum(Integer id, String type);

    /**
     * 获取用户收藏或关注的文章列表
     * @param user 用户信息
     * @param articleType 文章类型
     * @param articlePage 分页器
     * @return
     */
    IPage<Article> getFixArticleTypeList(User user, String articleType, IPage<Article> articlePage);

    /**
     * 获取用户收藏的文章列表
     * @param user 用户信息
     * @param articlePage 分页器
     * @return
     */
    IPage<Article> getCollectArticleList(User user, IPage<Article> articlePage);

    /**
     * 获取用户收藏 或关注 个数
     * @param userId
     * @param type
     * @return
     */
    Long getUserCollectNum(Integer userId, String type);

}
